#pragma once


struct SGlobalEnvironment;
struct IWindow;
struct ITimer;
struct ILog;
class CProfiler;

struct ISystem
{
	virtual ~ISystem() {}

	virtual bool	Init() = 0;
	virtual void	Shutdown() = 0;
	virtual bool	IsShuttingDown() const = 0;

	virtual SGlobalEnvironment* GetGlobalEnvironment() = 0;
	virtual IWindow* GetWindow() = 0;
	virtual ITimer* GetTimer() = 0;
	virtual ILog* GetLog() = 0;
	virtual CProfiler* GetProfiler() = 0;

	virtual void Update() = 0;
};